package com.school.entity;

/**
 * 父类：封装所有人员（学生/教师）的共性属性与通用方法
 * 权限修饰符说明：
 * - private：仅本类可见（如 id）
 * - protected：本类、同包类、子类可见（如 name）
 * - default（无修饰符）：本类、同包类可见（如 gender）
 * - public：所有类可见（如 printWorksheet()）
 */
public class Person {
    // 共性属性：编号（核心属性，private 保护）
    private String id;
    // 共性属性：姓名（需被子类访问，protected 修饰）
    protected String name;
    // 共性属性：性别（仅同包可见，default 修饰）
    String gender;

    // 父类带参构造方法：初始化共性属性
    public Person(String id, String name, String gender) {
        this.id = id;
        this.name = name;
        this.gender = gender;
    }

    // 通用业务方法：打印工作单（父类定义模板，子类重写实现个性化）
    public void printWorksheet() {
        System.out.println("=== 基础信息 ===");
        System.out.println("编号：" + id);
        System.out.println("姓名：" + name);
        System.out.println("性别：" + gender);
    }

    // Getter/Setter：private 属性的访问入口（子类/外部类需通过此访问 id）
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    // Getter：protected 属性的访问入口（跨包子类可通过此访问）
    public String getName() {
        return name;
    }
}